package com.ruoyi.business.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 合同信息对象 contracts
 * 
 * @author ruoyi
 * @date 2025-02-13
 */
public class Contracts extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 合同ID */
    private Long id;

    /** 合同编号 */
    @Excel(name = "合同编号")
    private String contractNumber;

    /** 房源地址 */
    @Excel(name = "房源地址")
    private String propertyAddress;

    /** 签约日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "签约日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date signingDate;

    /** 租期开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "租期开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 租期结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "租期结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 合同状态 */
    @Excel(name = "合同状态")
    private String status;

    /** 租金金额 */
    @Excel(name = "租金金额")
    private BigDecimal rentAmount;

    /** 支付周期 */
    @Excel(name = "支付周期")
    private String paymentCycle;

    /** 押金金额 */
    @Excel(name = "押金金额")
    private BigDecimal depositAmount;

    /** 租金递增条款 */
    @Excel(name = "租金递增条款")
    private String rentIncreaseTerms;

    /** 房东ID */
    @Excel(name = "房东ID")
    private Long landlordId;

    /** 租客ID */
    @Excel(name = "租客ID")
    private Long tenantId;

    /** 附加条款 */
    @Excel(name = "附加条款")
    private String additionalTerms;

    /** 电子签名 */
    @Excel(name = "电子签名")
    private String electronicSignature;

    /** 签署时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "签署时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date signatureTime;

    /** 解约日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "解约日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date terminationDate;

    /** 解约原因 */
    @Excel(name = "解约原因")
    private String terminationReason;

    /** 解约条款 */
    @Excel(name = "解约条款")
    private String terminationTerms;

    /** 解约协议 */
    @Excel(name = "解约协议")
    private String terminationAgreement;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setContractNumber(String contractNumber) 
    {
        this.contractNumber = contractNumber;
    }

    public String getContractNumber() 
    {
        return contractNumber;
    }
    public void setPropertyAddress(String propertyAddress) 
    {
        this.propertyAddress = propertyAddress;
    }

    public String getPropertyAddress() 
    {
        return propertyAddress;
    }
    public void setSigningDate(Date signingDate) 
    {
        this.signingDate = signingDate;
    }

    public Date getSigningDate() 
    {
        return signingDate;
    }
    public void setStartDate(Date startDate) 
    {
        this.startDate = startDate;
    }

    public Date getStartDate() 
    {
        return startDate;
    }
    public void setEndDate(Date endDate) 
    {
        this.endDate = endDate;
    }

    public Date getEndDate() 
    {
        return endDate;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }
    public void setRentAmount(BigDecimal rentAmount) 
    {
        this.rentAmount = rentAmount;
    }

    public BigDecimal getRentAmount() 
    {
        return rentAmount;
    }
    public void setPaymentCycle(String paymentCycle) 
    {
        this.paymentCycle = paymentCycle;
    }

    public String getPaymentCycle() 
    {
        return paymentCycle;
    }
    public void setDepositAmount(BigDecimal depositAmount) 
    {
        this.depositAmount = depositAmount;
    }

    public BigDecimal getDepositAmount() 
    {
        return depositAmount;
    }
    public void setRentIncreaseTerms(String rentIncreaseTerms) 
    {
        this.rentIncreaseTerms = rentIncreaseTerms;
    }

    public String getRentIncreaseTerms() 
    {
        return rentIncreaseTerms;
    }
    public void setLandlordId(Long landlordId) 
    {
        this.landlordId = landlordId;
    }

    public Long getLandlordId() 
    {
        return landlordId;
    }
    public void setTenantId(Long tenantId) 
    {
        this.tenantId = tenantId;
    }

    public Long getTenantId() 
    {
        return tenantId;
    }
    public void setAdditionalTerms(String additionalTerms) 
    {
        this.additionalTerms = additionalTerms;
    }

    public String getAdditionalTerms() 
    {
        return additionalTerms;
    }
    public void setElectronicSignature(String electronicSignature) 
    {
        this.electronicSignature = electronicSignature;
    }

    public String getElectronicSignature() 
    {
        return electronicSignature;
    }
    public void setSignatureTime(Date signatureTime) 
    {
        this.signatureTime = signatureTime;
    }

    public Date getSignatureTime() 
    {
        return signatureTime;
    }
    public void setTerminationDate(Date terminationDate) 
    {
        this.terminationDate = terminationDate;
    }

    public Date getTerminationDate() 
    {
        return terminationDate;
    }
    public void setTerminationReason(String terminationReason) 
    {
        this.terminationReason = terminationReason;
    }

    public String getTerminationReason() 
    {
        return terminationReason;
    }
    public void setTerminationTerms(String terminationTerms) 
    {
        this.terminationTerms = terminationTerms;
    }

    public String getTerminationTerms() 
    {
        return terminationTerms;
    }
    public void setTerminationAgreement(String terminationAgreement) 
    {
        this.terminationAgreement = terminationAgreement;
    }

    public String getTerminationAgreement() 
    {
        return terminationAgreement;
    }
    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("contractNumber", getContractNumber())
            .append("propertyAddress", getPropertyAddress())
            .append("signingDate", getSigningDate())
            .append("startDate", getStartDate())
            .append("endDate", getEndDate())
            .append("status", getStatus())
            .append("rentAmount", getRentAmount())
            .append("paymentCycle", getPaymentCycle())
            .append("depositAmount", getDepositAmount())
            .append("rentIncreaseTerms", getRentIncreaseTerms())
            .append("landlordId", getLandlordId())
            .append("tenantId", getTenantId())
            .append("additionalTerms", getAdditionalTerms())
            .append("electronicSignature", getElectronicSignature())
            .append("signatureTime", getSignatureTime())
            .append("terminationDate", getTerminationDate())
            .append("terminationReason", getTerminationReason())
            .append("terminationTerms", getTerminationTerms())
            .append("terminationAgreement", getTerminationAgreement())
            .append("createdAt", getCreatedAt())
            .toString();
    }
}
